/**
 * 
 */
package com.platform.common.utils.util.dynamic;

import java.io.File;
import java.io.IOException;

import com.platform.common.utils.FileUtils;

/**
 * <pre>
 * 功能：动态加载class文件
 * </pre>
 * 
 * @author wei.gao
 */
public class DynamicClassLoader extends ClassLoader {
	
	public DynamicClassLoader(ClassLoader parent) {
		super(parent);
	}
	
	/**
	 * <pre>
	 * 功能：动态加载类
	 * </pre>
	 * 
	 * @param clazzFile
	 * @param prefixDir
	 * @return
	 * @throws IOException
	 */
	public Class<?> loadClass(File clazzFile, File prefixDir) throws IOException {
		String clazzName = FileUtils.removeExtension(FileUtils.getFileName(clazzFile, prefixDir));
		return loadClass(clazzName, clazzFile);
	}
	
	/**
	 * <pre>
	 * 功能：动态加载类
	 * </pre>
	 * 
	 * @param clazzName
	 * @param clazzFile
	 * @return
	 * @throws IOException
	 */
	public Class<?> loadClass(String clazzName, File clazzFile) throws IOException {
		return loadClass(clazzName, FileUtils.readFileToByteArray(clazzFile));
	}
	
	/**
	 * <pre>
	 * 功能：动态加载类
	 * </pre>
	 * 
	 * @param clazzName
	 * @param clazzData
	 * @return
	 */
	public Class<?> loadClass(String clazzName, byte[] clazzData) {
		return defineClass(clazzName, clazzData, 0, clazzData.length);
	}
	
}
